<?php

// En este modelo se encarga de Justificar y Aprobar Tardias y Ausencias
class Tardia_Model extends CI_Model {

    // Saca todas las tardias y ausencias por aprobar
    public function getTardiaPorAprobar($conLimit, $limit, $start, $contar) {
        $consulta =
                '(select  usuario.nombre, usuario.apellidos, usuario.cedula, usuario.tipo, tardia.marca, tardia.justificacion, marcas.estado, horario.entrada, marcas.hora_actual 
                    from (select marca,justificacion from tardia where estado = 2) as tardia,
		(select * from marcas where (estado = 2 or estado = 3)) as marcas,
		(select cedula, nombre, apellidos, tipo from usuario) as usuario,
		(select id,entrada from horario) as horario where
		(marcas.id = tardia.marca) and (marcas.usuario = usuario.cedula) and (marcas.horario = horario.id))';

        if ($conLimit == TRUE) {
            $consulta .= ' LIMIT ' . $start . ',' . $limit;
        }

        $query = $this->db->query($consulta);

        //$query = $this->db->get();
        if ($contar == TRUE) {
            return $query->num_rows();
        } else
        if ($query->num_rows() > 0)
            return $query; // just return $query
        else
            return NULL;
    }

    public function getTardiaPorAprobarJefe($conLimit, $limit, $start, $contar, $jefe) {

        $consulta = '(
            select  usuario.nombre, usuario.apellidos, usuario.cedula, usuario.jefe ,tardiaU.marca, tardiaU.justificacion,  marcas.estado, horario.entrada, marcas.hora_actual 
            from 
            (select marca,justificacion from tardia where estado = 2) as tardiaU,
            (select * from marcas where (estado = 2 or estado = 3)) as marcas,
            (select cedula, nombre, apellidos,jefe from usuario where jefe =' . $jefe . ' and cedula !=' . $jefe . ') as usuario,
            (select id,entrada from horario) as horario where
            (marcas.id = tardiaU.marca) and (marcas.usuario = usuario.cedula) and (marcas.horario = horario.id)and (usuario.jefe =' . $jefe . ')            
            )';

        if ($conLimit == TRUE) {
            $consulta .= ' LIMIT ' . $start . ',' . $limit;
        }

        $query = $this->db->query($consulta);

        //$query = $this->db->get();
        if ($contar == TRUE) {
            return $query->num_rows();
        } else
        if ($query->num_rows() > 0)
            return $query; // just return $query
        else
            return NULL;
    }
    
    public function getTardiaPorJustificarJefe($conLimit, $limit, $start, $contar, $jefe) {

//        $consulta = '(
//            select  usuario.nombre, usuario.apellidos, usuario.cedula, usuario.jefe ,tardiaU.marca, tardiaU.justificacion,  marcas.estado, horario.entrada, marcas.hora_actual 
//            from 
//            (select marca,justificacion from tardia where estado = 2) as tardiaU,
//            (select * from marcas where (estado = 2 or estado = 3)) as marcas,
//            (select cedula, nombre, apellidos,jefe from usuario where jefe =' . $jefe . ') as usuario,
//            (select id,entrada from horario) as horario where
//            (marcas.id = tardiaU.marca) and (marcas.usuario = usuario.cedula) and (marcas.horario = horario.id)and (usuario.jefe =' . $jefe . '))';
        
                $consulta = '
            (select  usuario.nombre, usuario.apellidos, usuario.cedula, usuario.jefe ,tardia.marca, tardia.justificacion,  marcas.estado, horario.entrada, marcas.hora_actual 
            from (select marca,justificacion from tardia where estado = 1) as tardia,
            (select * from marcas where usuario =' . $jefe . ' and (estado = 2 or estado = 3)) as marcas,
            (select cedula, nombre, apellidos,jefe from usuario where cedula=' . $jefe . ') as usuario,
            (select id,entrada from horario) as horario where
            (marcas.id = tardia.marca) and (marcas.usuario = usuario.cedula) and (marcas.horario = horario.id))';

//        if ($conLimit == TRUE) {
//            $consulta .= ' LIMIT ' . $start . ',' . $limit;
//        }

        $query = $this->db->query($consulta);

        //$query = $this->db->get();
        if ($contar == TRUE) {
            return $query->num_rows();
        } else
        if ($query->num_rows() > 0)
            return $query; // just return $query
        else
            return NULL;
    }

    public function getTardiaAprobado($cedula = FALSE) {
        if ($cedula) {
            $query = $this->db->query(
                    '(select  usuario.cedula, usuario.nombre, usuario.apellidos, tardia.marca, tardia.justificacion, marcas.estado, horario.entrada, marcas.hora_actual 
                            from (select marca, justificacion from tardia) as tardia,
                                (select * from marcas where marcas.usuario = ' . $cedula . ' and estado = 4) as marcas,
                                (select cedula, nombre, apellidos from usuario where cedula = ' . $cedula . ') as usuario,
                                (select id,entrada from horario) as horario where
                                (marcas.id = tardia.marca) and (marcas.usuario = usuario.cedula) and (marcas.horario = horario.id))
                                ORDER BY horario.entrada DESC');
        } else {
            $query = $this->db->query(
                    '(select usuario.cedula,  usuario.nombre, usuario.apellidos, tardia.marca, tardia.justificacion, marcas.estado, horario.entrada, marcas.hora_actual 
                                from (select marca, justificacion from tardia where (estado = 3 or estado = 4)) as tardia,
                                      (select * from marcas where (estado = 4 or estado = 6) ) as marcas,
                                    (select cedula, nombre, apellidos from usuario) as usuario,
                                    (select id,entrada from horario) as horario where
                                    (marcas.id = tardia.marca) and (marcas.usuario = usuario.cedula) and (marcas.horario = horario.id))');
        }
        if ($query->num_rows() > 0) {
            return $query; // just return $query
        } else {
            return NULL;
        }
    }

    public function getAusenciaAprobado($cedula = FALSE) {
        if ($cedula) {
            $query = $this->db->query(
                    '(select  usuario.cedula, usuario.nombre, usuario.apellidos, tardia.marca, tardia.justificacion, marcas.estado, horario.entrada, marcas.hora_actual 
                            from (select marca, justificacion from tardia) as tardia,
                                (select * from marcas where marcas.usuario = ' . $cedula . ' and estado = 5) as marcas,
                                (select cedula, nombre, apellidos from usuario where cedula = ' . $cedula . ') as usuario,
                                (select id,entrada from horario) as horario where
                                (marcas.id = tardia.marca) and (marcas.usuario = usuario.cedula) and (marcas.horario = horario.id))
                                ORDER BY horario.entrada DESC');
        } else {
            $query = $this->db->query(
                    '(select usuario.cedula,  usuario.nombre, usuario.apellidos, tardia.marca, tardia.justificacion, marcas.estado, horario.entrada, marcas.hora_actual 
                                from (select marca, justificacion from tardia where (estado = 3 or estado = 4)) as tardia,
                                      (select * from marcas where (estado = 5 or estado = 7)) as marcas,
                                    (select cedula, nombre, apellidos from usuario) as usuario,
                                    (select id,entrada from horario) as horario where
                                    (marcas.id = tardia.marca) and (marcas.usuario = usuario.cedula) and (marcas.horario = horario.id))');
        }
        if ($query->num_rows() > 0) {
            return $query; // just return $query
        } else {
            return NULL;
        }
    }

    public function getTardiaRechazada($cedula) {
        $query = $this->db->query(
                '(select  usuario.cedula, usuario.nombre, usuario.apellidos, tardia.marca, tardia.justificacion, marcas.estado, horario.entrada, marcas.hora_actual 
                            from (select marca, justificacion from tardia) as tardia,
                                (select * from marcas where marcas.usuario = ' . $cedula . ' and estado = 6) as marcas,
                                (select cedula, nombre, apellidos from usuario where cedula = ' . $cedula . ') as usuario,
                                (select id,entrada from horario) as horario where
                                (marcas.id = tardia.marca) and (marcas.usuario = usuario.cedula) and (marcas.horario = horario.id))
                                ORDER BY horario.entrada DESC');
        if ($query->num_rows() > 0) {
            return $query; // just return $query
        } else {
            return NULL;
        }
    }

    public function getAusenciaRechazada($cedula) {
        $query = $this->db->query(
                '(select  usuario.cedula, usuario.nombre, usuario.apellidos, tardia.marca, tardia.justificacion, marcas.estado, horario.entrada, marcas.hora_actual 
                            from (select marca, justificacion from tardia) as tardia,
                                (select * from marcas where marcas.usuario = ' . $cedula . ' and estado = 7) as marcas,
                                (select cedula, nombre, apellidos from usuario where cedula = ' . $cedula . ') as usuario,
                                (select id,entrada from horario) as horario where
                                (marcas.id = tardia.marca) and (marcas.usuario = usuario.cedula) and (marcas.horario = horario.id))
                                ORDER BY horario.entrada DESC');
        if ($query->num_rows() > 0) {
            return $query; // just return $query
        } else {
            return NULL;
        }
    }

    public function getTardiaSinAprobar($cedula) {
        $query = $this->db->query(
                '(select  usuario.cedula, usuario.nombre, usuario.apellidos, tardia.marca, tardia.justificacion, marcas.estado, horario.entrada, marcas.hora_actual 
                            from (select marca, justificacion from tardia) as tardia,
                                (select * from marcas where marcas.usuario = ' . $cedula . ' and estado = 2) as marcas,
                                (select cedula, nombre, apellidos from usuario where cedula = ' . $cedula . ') as usuario,
                                (select id,entrada from horario) as horario where
                                (marcas.id = tardia.marca) and (marcas.usuario = usuario.cedula) and (marcas.horario = horario.id))
                                ORDER BY horario.entrada DESC');

        if ($query->num_rows() > 0) {
            return $query; // just return $query
        } else {
            return NULL;
        }
    }

    public function getAusenciaSinAprobar($cedula) {
        $query = $this->db->query(
                '(select  usuario.cedula, usuario.nombre, usuario.apellidos, tardia.marca, tardia.justificacion, marcas.estado, horario.entrada, marcas.hora_actual 
                            from  (select marca, justificacion from tardia) as tardia,
                                (select * from marcas where marcas.usuario = ' . $cedula . ' and estado = 3) as marcas,
                                (select cedula, nombre, apellidos from usuario where cedula = ' . $cedula . ') as usuario,
                                (select id,entrada from horario) as horario where
                                (marcas.id = tardia.marca) and (marcas.usuario = usuario.cedula) and (marcas.horario = horario.id))
                                ORDER BY horario.entrada DESC');
        if ($query->num_rows() > 0) {
            return $query; // just return $query
        } else {
            return NULL;
        }
    }

    public function getAusenciaTardiaPorJustificar($conLimit, $limit, $start, $cedula, $contar) {

        $consulta = '(select  usuario.nombre, usuario.apellidos, tardia.marca, marcas.estado, horario.entrada, marcas.hora_actual 
	from (select marca from tardia where estado = 1) as tardia,
		(select * from marcas where usuario = ' . $cedula . ' and (estado = 2 or estado = 3)) as marcas,
		(select cedula, nombre, apellidos from usuario where cedula=' . $cedula . ') as usuario,
		(select id,entrada from horario) as horario where
		(marcas.id = tardia.marca) and (marcas.usuario = usuario.cedula) and (marcas.horario = horario.id))';
//        $consulta =
//                '(select  usuario.nombre, usuario.apellidos, tardia.marca, marcas.estado, horario.entrada, marcas.hora_actual 
//	from (select marca from tardia where estado = 1) as tardia,
//		marcas,
//		(select cedula, nombre, apellidos from usuario where cedula=' . $cedula . ') as usuario,
//		(select id,entrada from horario) as horario where
//		(marcas.id = tardia.marca) and (marcas.usuario = usuario.cedula) and (marcas.horario = horario.id))';

        if ($conLimit == TRUE) {
            $consulta .= ' LIMIT ' . $start . ',' . $limit;
        }

        $query = $this->db->query($consulta);

        //$query = $this->db->get();
        if ($contar == TRUE) {
            return $query->num_rows();
        } else
        if ($query->num_rows() > 0)
            return $query; // just return $query
        else
            return NULL;

//        if ($query->num_rows() > 0) {
//            return $query; // just return $query
//        } else {
//            return NULL;
//        }
    }

    public function actualizarEstado($marca, $estado) {
        $data = array(
            'estado' => $estado
        );
        $this->db->where('marca', $marca);
        $this->db->update('tardia', $data);
    }

    // Metodo utilizado por el usuario para insertar su justificacion en el campo de justificacion de la tabla tardia
    public function actualizarJustificacion($marca, $justificacion) {
        $data = array(
            'justificacion' => $justificacion
        );
        $this->db->where('marca', $marca);
        $this->db->update('tardia', $data);
    }

}

?>
